{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Reproduce Leaf Counting\n",
    "# Keras Implementation of InceptionV3\n",
    "# Varun Aggarwal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ensures back compatibility\n",
    "from tensorflow.keras import backend as K\n",
    "\n",
    "# for reading and preprocessing data\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Flatten, Dense, Dropout\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "\n",
    "# inceptionv3 model from keras with pretrained weights\n",
    "from tensorflow.python.keras.applications.inception_v3 import InceptionV3, preprocess_input\n",
    "\n",
    "import tensorflow as tf\n",
    "\n",
    "# for plots et al.\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "DATASET_PATH  = './dataset'\n",
    "IMAGE_SIZE    = (250, 250)\n",
    "NUM_CLASSES   = 9\n",
    "BATCH_SIZE    = 8\n",
    "NUM_EPOCHS    = 20\n",
    "WEIGHTS_FINAL = 'model-inception_v3-final.h5'\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 6856 images belonging to 9 classes.\n"
     ]
    }
   ],
   "source": [
    "# specify data augmentation parameters for training images\n",
    "train_datagen = ImageDataGenerator(preprocessing_function=preprocess_input,\n",
    "                                   rotation_range=30,\n",
    "                                   width_shift_range=0.2,\n",
    "                                   height_shift_range=0.2,\n",
    "                                   zoom_range=0.4,\n",
    "                                   horizontal_flip=True,\n",
    "                                   fill_mode='nearest')\n",
    "train_batches = train_datagen.flow_from_directory(DATASET_PATH + '/train',\n",
    "                                                  target_size=IMAGE_SIZE,\n",
    "                                                  interpolation='bicubic',\n",
    "                                                  class_mode='categorical',\n",
    "                                                  shuffle=True,\n",
    "                                                  batch_size=BATCH_SIZE)\n",
    "\n",
    "# valid_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)\n",
    "\n",
    "# valid_batches = valid_datagen.flow_from_directory(DATASET_PATH + '/val',\n",
    "#                                                   target_size=IMAGE_SIZE,\n",
    "#                                                   interpolation='bicubic',\n",
    "#                                                   class_mode='categorical',\n",
    "#                                                   shuffle=False,\n",
    "#                                                   batch_size=BATCH_SIZE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "****************\n",
      "Class #0 = 1\n",
      "Class #1 = 2\n",
      "Class #2 = 3\n",
      "Class #3 = 4\n",
      "Class #4 = 5\n",
      "Class #5 = 6\n",
      "Class #6 = 7\n",
      "Class #7 = 8\n",
      "Class #8 = 9+\n",
      "****************\n"
     ]
    }
   ],
   "source": [
    "# show class indices\n",
    "print('****************')\n",
    "for cls, idx in train_batches.class_indices.items():\n",
    "    print('Class #{} = {}'.format(idx, cls))\n",
    "print('****************')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# inceptionv4 - model setup\n",
    "model = InceptionV3(include_top=False,\n",
    "                    weights='imagenet',\n",
    "                    input_tensor=None,\n",
    "                    input_shape=(IMAGE_SIZE[0], IMAGE_SIZE[1], 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# adding final FC layer at the end of model\n",
    "x = model.output\n",
    "x = Flatten()(x)\n",
    "x = Dropout(0.5)(x)\n",
    "output_layer = Dense( NUM_CLASSES,\n",
    "                      activation='softmax',\n",
    "                      name='softmax')(x)\n",
    "\n",
    "model = Model(inputs=model.input,\n",
    "              outputs=output_layer)\n",
    "\n",
    "\n",
    "# ensure all layers are trainable\n",
    "for layer in model.layers:\n",
    "    layer.trainable = True\n",
    "\n",
    "# setting up optimizer for model\n",
    "model.compile(optimizer=Adam(lr=1e-5),\n",
    "              loss='categorical_crossentropy',\n",
    "              metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            [(None, 250, 250, 3) 0                                            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d (Conv2D)                 (None, 124, 124, 32) 864         input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 124, 124, 32) 96          conv2d[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation (Activation)         (None, 124, 124, 32) 0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_1 (Conv2D)               (None, 122, 122, 32) 9216        activation[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_1 (BatchNor (None, 122, 122, 32) 96          conv2d_1[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_1 (Activation)       (None, 122, 122, 32) 0           batch_normalization_1[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_2 (Conv2D)               (None, 122, 122, 64) 18432       activation_1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_2 (BatchNor (None, 122, 122, 64) 192         conv2d_2[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_2 (Activation)       (None, 122, 122, 64) 0           batch_normalization_2[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d (MaxPooling2D)    (None, 60, 60, 64)   0           activation_2[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_3 (Conv2D)               (None, 60, 60, 80)   5120        max_pooling2d[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_3 (BatchNor (None, 60, 60, 80)   240         conv2d_3[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_3 (Activation)       (None, 60, 60, 80)   0           batch_normalization_3[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_4 (Conv2D)               (None, 58, 58, 192)  138240      activation_3[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_4 (BatchNor (None, 58, 58, 192)  576         conv2d_4[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_4 (Activation)       (None, 58, 58, 192)  0           batch_normalization_4[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2D)  (None, 28, 28, 192)  0           activation_4[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_8 (Conv2D)               (None, 28, 28, 64)   12288       max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_8 (BatchNor (None, 28, 28, 64)   192         conv2d_8[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_8 (Activation)       (None, 28, 28, 64)   0           batch_normalization_8[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_6 (Conv2D)               (None, 28, 28, 48)   9216        max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_9 (Conv2D)               (None, 28, 28, 96)   55296       activation_8[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_6 (BatchNor (None, 28, 28, 48)   144         conv2d_6[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_9 (BatchNor (None, 28, 28, 96)   288         conv2d_9[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_6 (Activation)       (None, 28, 28, 48)   0           batch_normalization_6[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "activation_9 (Activation)       (None, 28, 28, 96)   0           batch_normalization_9[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d (AveragePooli (None, 28, 28, 192)  0           max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_5 (Conv2D)               (None, 28, 28, 64)   12288       max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_7 (Conv2D)               (None, 28, 28, 64)   76800       activation_6[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_10 (Conv2D)              (None, 28, 28, 96)   82944       activation_9[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_11 (Conv2D)              (None, 28, 28, 32)   6144        average_pooling2d[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_5 (BatchNor (None, 28, 28, 64)   192         conv2d_5[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_7 (BatchNor (None, 28, 28, 64)   192         conv2d_7[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_10 (BatchNo (None, 28, 28, 96)   288         conv2d_10[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_11 (BatchNo (None, 28, 28, 32)   96          conv2d_11[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_5 (Activation)       (None, 28, 28, 64)   0           batch_normalization_5[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "activation_7 (Activation)       (None, 28, 28, 64)   0           batch_normalization_7[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "activation_10 (Activation)      (None, 28, 28, 96)   0           batch_normalization_10[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_11 (Activation)      (None, 28, 28, 32)   0           batch_normalization_11[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed0 (Concatenate)            (None, 28, 28, 256)  0           activation_5[0][0]               \n",
      "                                                                 activation_7[0][0]               \n",
      "                                                                 activation_10[0][0]              \n",
      "                                                                 activation_11[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_15 (Conv2D)              (None, 28, 28, 64)   16384       mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_15 (BatchNo (None, 28, 28, 64)   192         conv2d_15[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_15 (Activation)      (None, 28, 28, 64)   0           batch_normalization_15[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_13 (Conv2D)              (None, 28, 28, 48)   12288       mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_16 (Conv2D)              (None, 28, 28, 96)   55296       activation_15[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_13 (BatchNo (None, 28, 28, 48)   144         conv2d_13[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_16 (BatchNo (None, 28, 28, 96)   288         conv2d_16[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_13 (Activation)      (None, 28, 28, 48)   0           batch_normalization_13[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_16 (Activation)      (None, 28, 28, 96)   0           batch_normalization_16[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_1 (AveragePoo (None, 28, 28, 256)  0           mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_12 (Conv2D)              (None, 28, 28, 64)   16384       mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_14 (Conv2D)              (None, 28, 28, 64)   76800       activation_13[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_17 (Conv2D)              (None, 28, 28, 96)   82944       activation_16[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_18 (Conv2D)              (None, 28, 28, 64)   16384       average_pooling2d_1[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_12 (BatchNo (None, 28, 28, 64)   192         conv2d_12[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_14 (BatchNo (None, 28, 28, 64)   192         conv2d_14[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_17 (BatchNo (None, 28, 28, 96)   288         conv2d_17[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_18 (BatchNo (None, 28, 28, 64)   192         conv2d_18[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_12 (Activation)      (None, 28, 28, 64)   0           batch_normalization_12[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_14 (Activation)      (None, 28, 28, 64)   0           batch_normalization_14[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_17 (Activation)      (None, 28, 28, 96)   0           batch_normalization_17[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_18 (Activation)      (None, 28, 28, 64)   0           batch_normalization_18[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed1 (Concatenate)            (None, 28, 28, 288)  0           activation_12[0][0]              \n",
      "                                                                 activation_14[0][0]              \n",
      "                                                                 activation_17[0][0]              \n",
      "                                                                 activation_18[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_22 (Conv2D)              (None, 28, 28, 64)   18432       mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_22 (BatchNo (None, 28, 28, 64)   192         conv2d_22[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_22 (Activation)      (None, 28, 28, 64)   0           batch_normalization_22[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_20 (Conv2D)              (None, 28, 28, 48)   13824       mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_23 (Conv2D)              (None, 28, 28, 96)   55296       activation_22[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_20 (BatchNo (None, 28, 28, 48)   144         conv2d_20[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_23 (BatchNo (None, 28, 28, 96)   288         conv2d_23[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_20 (Activation)      (None, 28, 28, 48)   0           batch_normalization_20[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_23 (Activation)      (None, 28, 28, 96)   0           batch_normalization_23[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_2 (AveragePoo (None, 28, 28, 288)  0           mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_19 (Conv2D)              (None, 28, 28, 64)   18432       mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_21 (Conv2D)              (None, 28, 28, 64)   76800       activation_20[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_24 (Conv2D)              (None, 28, 28, 96)   82944       activation_23[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_25 (Conv2D)              (None, 28, 28, 64)   18432       average_pooling2d_2[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_19 (BatchNo (None, 28, 28, 64)   192         conv2d_19[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_21 (BatchNo (None, 28, 28, 64)   192         conv2d_21[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_24 (BatchNo (None, 28, 28, 96)   288         conv2d_24[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_25 (BatchNo (None, 28, 28, 64)   192         conv2d_25[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_19 (Activation)      (None, 28, 28, 64)   0           batch_normalization_19[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_21 (Activation)      (None, 28, 28, 64)   0           batch_normalization_21[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_24 (Activation)      (None, 28, 28, 96)   0           batch_normalization_24[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_25 (Activation)      (None, 28, 28, 64)   0           batch_normalization_25[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed2 (Concatenate)            (None, 28, 28, 288)  0           activation_19[0][0]              \n",
      "                                                                 activation_21[0][0]              \n",
      "                                                                 activation_24[0][0]              \n",
      "                                                                 activation_25[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_27 (Conv2D)              (None, 28, 28, 64)   18432       mixed2[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_27 (BatchNo (None, 28, 28, 64)   192         conv2d_27[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_27 (Activation)      (None, 28, 28, 64)   0           batch_normalization_27[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_28 (Conv2D)              (None, 28, 28, 96)   55296       activation_27[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_28 (BatchNo (None, 28, 28, 96)   288         conv2d_28[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_28 (Activation)      (None, 28, 28, 96)   0           batch_normalization_28[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_26 (Conv2D)              (None, 13, 13, 384)  995328      mixed2[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_29 (Conv2D)              (None, 13, 13, 96)   82944       activation_28[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_26 (BatchNo (None, 13, 13, 384)  1152        conv2d_26[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_29 (BatchNo (None, 13, 13, 96)   288         conv2d_29[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_26 (Activation)      (None, 13, 13, 384)  0           batch_normalization_26[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_29 (Activation)      (None, 13, 13, 96)   0           batch_normalization_29[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_2 (MaxPooling2D)  (None, 13, 13, 288)  0           mixed2[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "mixed3 (Concatenate)            (None, 13, 13, 768)  0           activation_26[0][0]              \n",
      "                                                                 activation_29[0][0]              \n",
      "                                                                 max_pooling2d_2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_34 (Conv2D)              (None, 13, 13, 128)  98304       mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_34 (BatchNo (None, 13, 13, 128)  384         conv2d_34[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_34 (Activation)      (None, 13, 13, 128)  0           batch_normalization_34[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_35 (Conv2D)              (None, 13, 13, 128)  114688      activation_34[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_35 (BatchNo (None, 13, 13, 128)  384         conv2d_35[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_35 (Activation)      (None, 13, 13, 128)  0           batch_normalization_35[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_31 (Conv2D)              (None, 13, 13, 128)  98304       mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_36 (Conv2D)              (None, 13, 13, 128)  114688      activation_35[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_31 (BatchNo (None, 13, 13, 128)  384         conv2d_31[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_36 (BatchNo (None, 13, 13, 128)  384         conv2d_36[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_31 (Activation)      (None, 13, 13, 128)  0           batch_normalization_31[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_36 (Activation)      (None, 13, 13, 128)  0           batch_normalization_36[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_32 (Conv2D)              (None, 13, 13, 128)  114688      activation_31[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_37 (Conv2D)              (None, 13, 13, 128)  114688      activation_36[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_32 (BatchNo (None, 13, 13, 128)  384         conv2d_32[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_37 (BatchNo (None, 13, 13, 128)  384         conv2d_37[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_32 (Activation)      (None, 13, 13, 128)  0           batch_normalization_32[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_37 (Activation)      (None, 13, 13, 128)  0           batch_normalization_37[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_3 (AveragePoo (None, 13, 13, 768)  0           mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_30 (Conv2D)              (None, 13, 13, 192)  147456      mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_33 (Conv2D)              (None, 13, 13, 192)  172032      activation_32[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_38 (Conv2D)              (None, 13, 13, 192)  172032      activation_37[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_39 (Conv2D)              (None, 13, 13, 192)  147456      average_pooling2d_3[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_30 (BatchNo (None, 13, 13, 192)  576         conv2d_30[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_33 (BatchNo (None, 13, 13, 192)  576         conv2d_33[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_38 (BatchNo (None, 13, 13, 192)  576         conv2d_38[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_39 (BatchNo (None, 13, 13, 192)  576         conv2d_39[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_30 (Activation)      (None, 13, 13, 192)  0           batch_normalization_30[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_33 (Activation)      (None, 13, 13, 192)  0           batch_normalization_33[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_38 (Activation)      (None, 13, 13, 192)  0           batch_normalization_38[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_39 (Activation)      (None, 13, 13, 192)  0           batch_normalization_39[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed4 (Concatenate)            (None, 13, 13, 768)  0           activation_30[0][0]              \n",
      "                                                                 activation_33[0][0]              \n",
      "                                                                 activation_38[0][0]              \n",
      "                                                                 activation_39[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_44 (Conv2D)              (None, 13, 13, 160)  122880      mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_44 (BatchNo (None, 13, 13, 160)  480         conv2d_44[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_44 (Activation)      (None, 13, 13, 160)  0           batch_normalization_44[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_45 (Conv2D)              (None, 13, 13, 160)  179200      activation_44[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_45 (BatchNo (None, 13, 13, 160)  480         conv2d_45[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_45 (Activation)      (None, 13, 13, 160)  0           batch_normalization_45[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_41 (Conv2D)              (None, 13, 13, 160)  122880      mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_46 (Conv2D)              (None, 13, 13, 160)  179200      activation_45[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_41 (BatchNo (None, 13, 13, 160)  480         conv2d_41[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_46 (BatchNo (None, 13, 13, 160)  480         conv2d_46[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_41 (Activation)      (None, 13, 13, 160)  0           batch_normalization_41[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_46 (Activation)      (None, 13, 13, 160)  0           batch_normalization_46[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_42 (Conv2D)              (None, 13, 13, 160)  179200      activation_41[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_47 (Conv2D)              (None, 13, 13, 160)  179200      activation_46[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_42 (BatchNo (None, 13, 13, 160)  480         conv2d_42[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_47 (BatchNo (None, 13, 13, 160)  480         conv2d_47[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_42 (Activation)      (None, 13, 13, 160)  0           batch_normalization_42[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_47 (Activation)      (None, 13, 13, 160)  0           batch_normalization_47[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_4 (AveragePoo (None, 13, 13, 768)  0           mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_40 (Conv2D)              (None, 13, 13, 192)  147456      mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_43 (Conv2D)              (None, 13, 13, 192)  215040      activation_42[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_48 (Conv2D)              (None, 13, 13, 192)  215040      activation_47[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_49 (Conv2D)              (None, 13, 13, 192)  147456      average_pooling2d_4[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_40 (BatchNo (None, 13, 13, 192)  576         conv2d_40[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_43 (BatchNo (None, 13, 13, 192)  576         conv2d_43[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_48 (BatchNo (None, 13, 13, 192)  576         conv2d_48[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_49 (BatchNo (None, 13, 13, 192)  576         conv2d_49[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_40 (Activation)      (None, 13, 13, 192)  0           batch_normalization_40[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_43 (Activation)      (None, 13, 13, 192)  0           batch_normalization_43[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_48 (Activation)      (None, 13, 13, 192)  0           batch_normalization_48[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_49 (Activation)      (None, 13, 13, 192)  0           batch_normalization_49[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed5 (Concatenate)            (None, 13, 13, 768)  0           activation_40[0][0]              \n",
      "                                                                 activation_43[0][0]              \n",
      "                                                                 activation_48[0][0]              \n",
      "                                                                 activation_49[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_54 (Conv2D)              (None, 13, 13, 160)  122880      mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_54 (BatchNo (None, 13, 13, 160)  480         conv2d_54[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_54 (Activation)      (None, 13, 13, 160)  0           batch_normalization_54[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_55 (Conv2D)              (None, 13, 13, 160)  179200      activation_54[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_55 (BatchNo (None, 13, 13, 160)  480         conv2d_55[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_55 (Activation)      (None, 13, 13, 160)  0           batch_normalization_55[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_51 (Conv2D)              (None, 13, 13, 160)  122880      mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_56 (Conv2D)              (None, 13, 13, 160)  179200      activation_55[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_51 (BatchNo (None, 13, 13, 160)  480         conv2d_51[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_56 (BatchNo (None, 13, 13, 160)  480         conv2d_56[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_51 (Activation)      (None, 13, 13, 160)  0           batch_normalization_51[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_56 (Activation)      (None, 13, 13, 160)  0           batch_normalization_56[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_52 (Conv2D)              (None, 13, 13, 160)  179200      activation_51[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_57 (Conv2D)              (None, 13, 13, 160)  179200      activation_56[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_52 (BatchNo (None, 13, 13, 160)  480         conv2d_52[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_57 (BatchNo (None, 13, 13, 160)  480         conv2d_57[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_52 (Activation)      (None, 13, 13, 160)  0           batch_normalization_52[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_57 (Activation)      (None, 13, 13, 160)  0           batch_normalization_57[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_5 (AveragePoo (None, 13, 13, 768)  0           mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_50 (Conv2D)              (None, 13, 13, 192)  147456      mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_53 (Conv2D)              (None, 13, 13, 192)  215040      activation_52[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_58 (Conv2D)              (None, 13, 13, 192)  215040      activation_57[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_59 (Conv2D)              (None, 13, 13, 192)  147456      average_pooling2d_5[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_50 (BatchNo (None, 13, 13, 192)  576         conv2d_50[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_53 (BatchNo (None, 13, 13, 192)  576         conv2d_53[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_58 (BatchNo (None, 13, 13, 192)  576         conv2d_58[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_59 (BatchNo (None, 13, 13, 192)  576         conv2d_59[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_50 (Activation)      (None, 13, 13, 192)  0           batch_normalization_50[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_53 (Activation)      (None, 13, 13, 192)  0           batch_normalization_53[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_58 (Activation)      (None, 13, 13, 192)  0           batch_normalization_58[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_59 (Activation)      (None, 13, 13, 192)  0           batch_normalization_59[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed6 (Concatenate)            (None, 13, 13, 768)  0           activation_50[0][0]              \n",
      "                                                                 activation_53[0][0]              \n",
      "                                                                 activation_58[0][0]              \n",
      "                                                                 activation_59[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_64 (Conv2D)              (None, 13, 13, 192)  147456      mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_64 (BatchNo (None, 13, 13, 192)  576         conv2d_64[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_64 (Activation)      (None, 13, 13, 192)  0           batch_normalization_64[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_65 (Conv2D)              (None, 13, 13, 192)  258048      activation_64[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_65 (BatchNo (None, 13, 13, 192)  576         conv2d_65[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_65 (Activation)      (None, 13, 13, 192)  0           batch_normalization_65[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_61 (Conv2D)              (None, 13, 13, 192)  147456      mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_66 (Conv2D)              (None, 13, 13, 192)  258048      activation_65[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_61 (BatchNo (None, 13, 13, 192)  576         conv2d_61[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_66 (BatchNo (None, 13, 13, 192)  576         conv2d_66[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_61 (Activation)      (None, 13, 13, 192)  0           batch_normalization_61[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_66 (Activation)      (None, 13, 13, 192)  0           batch_normalization_66[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_62 (Conv2D)              (None, 13, 13, 192)  258048      activation_61[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_67 (Conv2D)              (None, 13, 13, 192)  258048      activation_66[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_62 (BatchNo (None, 13, 13, 192)  576         conv2d_62[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_67 (BatchNo (None, 13, 13, 192)  576         conv2d_67[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_62 (Activation)      (None, 13, 13, 192)  0           batch_normalization_62[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_67 (Activation)      (None, 13, 13, 192)  0           batch_normalization_67[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_6 (AveragePoo (None, 13, 13, 768)  0           mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_60 (Conv2D)              (None, 13, 13, 192)  147456      mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_63 (Conv2D)              (None, 13, 13, 192)  258048      activation_62[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_68 (Conv2D)              (None, 13, 13, 192)  258048      activation_67[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_69 (Conv2D)              (None, 13, 13, 192)  147456      average_pooling2d_6[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_60 (BatchNo (None, 13, 13, 192)  576         conv2d_60[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_63 (BatchNo (None, 13, 13, 192)  576         conv2d_63[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_68 (BatchNo (None, 13, 13, 192)  576         conv2d_68[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_69 (BatchNo (None, 13, 13, 192)  576         conv2d_69[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_60 (Activation)      (None, 13, 13, 192)  0           batch_normalization_60[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_63 (Activation)      (None, 13, 13, 192)  0           batch_normalization_63[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_68 (Activation)      (None, 13, 13, 192)  0           batch_normalization_68[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_69 (Activation)      (None, 13, 13, 192)  0           batch_normalization_69[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed7 (Concatenate)            (None, 13, 13, 768)  0           activation_60[0][0]              \n",
      "                                                                 activation_63[0][0]              \n",
      "                                                                 activation_68[0][0]              \n",
      "                                                                 activation_69[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_72 (Conv2D)              (None, 13, 13, 192)  147456      mixed7[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_72 (BatchNo (None, 13, 13, 192)  576         conv2d_72[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_72 (Activation)      (None, 13, 13, 192)  0           batch_normalization_72[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_73 (Conv2D)              (None, 13, 13, 192)  258048      activation_72[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_73 (BatchNo (None, 13, 13, 192)  576         conv2d_73[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_73 (Activation)      (None, 13, 13, 192)  0           batch_normalization_73[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_70 (Conv2D)              (None, 13, 13, 192)  147456      mixed7[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_74 (Conv2D)              (None, 13, 13, 192)  258048      activation_73[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_70 (BatchNo (None, 13, 13, 192)  576         conv2d_70[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_74 (BatchNo (None, 13, 13, 192)  576         conv2d_74[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_70 (Activation)      (None, 13, 13, 192)  0           batch_normalization_70[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_74 (Activation)      (None, 13, 13, 192)  0           batch_normalization_74[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_71 (Conv2D)              (None, 6, 6, 320)    552960      activation_70[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_75 (Conv2D)              (None, 6, 6, 192)    331776      activation_74[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_71 (BatchNo (None, 6, 6, 320)    960         conv2d_71[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_75 (BatchNo (None, 6, 6, 192)    576         conv2d_75[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_71 (Activation)      (None, 6, 6, 320)    0           batch_normalization_71[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_75 (Activation)      (None, 6, 6, 192)    0           batch_normalization_75[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_3 (MaxPooling2D)  (None, 6, 6, 768)    0           mixed7[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "mixed8 (Concatenate)            (None, 6, 6, 1280)   0           activation_71[0][0]              \n",
      "                                                                 activation_75[0][0]              \n",
      "                                                                 max_pooling2d_3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_80 (Conv2D)              (None, 6, 6, 448)    573440      mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_80 (BatchNo (None, 6, 6, 448)    1344        conv2d_80[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_80 (Activation)      (None, 6, 6, 448)    0           batch_normalization_80[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_77 (Conv2D)              (None, 6, 6, 384)    491520      mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_81 (Conv2D)              (None, 6, 6, 384)    1548288     activation_80[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_77 (BatchNo (None, 6, 6, 384)    1152        conv2d_77[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_81 (BatchNo (None, 6, 6, 384)    1152        conv2d_81[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_77 (Activation)      (None, 6, 6, 384)    0           batch_normalization_77[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_81 (Activation)      (None, 6, 6, 384)    0           batch_normalization_81[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_78 (Conv2D)              (None, 6, 6, 384)    442368      activation_77[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_79 (Conv2D)              (None, 6, 6, 384)    442368      activation_77[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_82 (Conv2D)              (None, 6, 6, 384)    442368      activation_81[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_83 (Conv2D)              (None, 6, 6, 384)    442368      activation_81[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_7 (AveragePoo (None, 6, 6, 1280)   0           mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_76 (Conv2D)              (None, 6, 6, 320)    409600      mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_78 (BatchNo (None, 6, 6, 384)    1152        conv2d_78[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_79 (BatchNo (None, 6, 6, 384)    1152        conv2d_79[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_82 (BatchNo (None, 6, 6, 384)    1152        conv2d_82[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_83 (BatchNo (None, 6, 6, 384)    1152        conv2d_83[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_84 (Conv2D)              (None, 6, 6, 192)    245760      average_pooling2d_7[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_76 (BatchNo (None, 6, 6, 320)    960         conv2d_76[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_78 (Activation)      (None, 6, 6, 384)    0           batch_normalization_78[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_79 (Activation)      (None, 6, 6, 384)    0           batch_normalization_79[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_82 (Activation)      (None, 6, 6, 384)    0           batch_normalization_82[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_83 (Activation)      (None, 6, 6, 384)    0           batch_normalization_83[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_84 (BatchNo (None, 6, 6, 192)    576         conv2d_84[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_76 (Activation)      (None, 6, 6, 320)    0           batch_normalization_76[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed9_0 (Concatenate)          (None, 6, 6, 768)    0           activation_78[0][0]              \n",
      "                                                                 activation_79[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "concatenate (Concatenate)       (None, 6, 6, 768)    0           activation_82[0][0]              \n",
      "                                                                 activation_83[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_84 (Activation)      (None, 6, 6, 192)    0           batch_normalization_84[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed9 (Concatenate)            (None, 6, 6, 2048)   0           activation_76[0][0]              \n",
      "                                                                 mixed9_0[0][0]                   \n",
      "                                                                 concatenate[0][0]                \n",
      "                                                                 activation_84[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_89 (Conv2D)              (None, 6, 6, 448)    917504      mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_89 (BatchNo (None, 6, 6, 448)    1344        conv2d_89[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_89 (Activation)      (None, 6, 6, 448)    0           batch_normalization_89[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_86 (Conv2D)              (None, 6, 6, 384)    786432      mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_90 (Conv2D)              (None, 6, 6, 384)    1548288     activation_89[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_86 (BatchNo (None, 6, 6, 384)    1152        conv2d_86[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_90 (BatchNo (None, 6, 6, 384)    1152        conv2d_90[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_86 (Activation)      (None, 6, 6, 384)    0           batch_normalization_86[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_90 (Activation)      (None, 6, 6, 384)    0           batch_normalization_90[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_87 (Conv2D)              (None, 6, 6, 384)    442368      activation_86[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_88 (Conv2D)              (None, 6, 6, 384)    442368      activation_86[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_91 (Conv2D)              (None, 6, 6, 384)    442368      activation_90[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_92 (Conv2D)              (None, 6, 6, 384)    442368      activation_90[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_8 (AveragePoo (None, 6, 6, 2048)   0           mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_85 (Conv2D)              (None, 6, 6, 320)    655360      mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_87 (BatchNo (None, 6, 6, 384)    1152        conv2d_87[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_88 (BatchNo (None, 6, 6, 384)    1152        conv2d_88[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_91 (BatchNo (None, 6, 6, 384)    1152        conv2d_91[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_92 (BatchNo (None, 6, 6, 384)    1152        conv2d_92[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_93 (Conv2D)              (None, 6, 6, 192)    393216      average_pooling2d_8[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_85 (BatchNo (None, 6, 6, 320)    960         conv2d_85[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_87 (Activation)      (None, 6, 6, 384)    0           batch_normalization_87[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_88 (Activation)      (None, 6, 6, 384)    0           batch_normalization_88[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_91 (Activation)      (None, 6, 6, 384)    0           batch_normalization_91[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_92 (Activation)      (None, 6, 6, 384)    0           batch_normalization_92[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_93 (BatchNo (None, 6, 6, 192)    576         conv2d_93[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_85 (Activation)      (None, 6, 6, 320)    0           batch_normalization_85[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed9_1 (Concatenate)          (None, 6, 6, 768)    0           activation_87[0][0]              \n",
      "                                                                 activation_88[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_1 (Concatenate)     (None, 6, 6, 768)    0           activation_91[0][0]              \n",
      "                                                                 activation_92[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_93 (Activation)      (None, 6, 6, 192)    0           batch_normalization_93[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed10 (Concatenate)           (None, 6, 6, 2048)   0           activation_85[0][0]              \n",
      "                                                                 mixed9_1[0][0]                   \n",
      "                                                                 concatenate_1[0][0]              \n",
      "                                                                 activation_93[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 73728)        0           mixed10[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "dropout (Dropout)               (None, 73728)        0           flatten[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "softmax (Dense)                 (None, 9)            663561      dropout[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 22,466,345\n",
      "Trainable params: 22,431,913\n",
      "Non-trainable params: 34,432\n",
      "__________________________________________________________________________________________________\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "print(model.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# load saved weights\n",
    "model.load_weights(WEIGHTS_FINAL)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'valid_batches' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-9-288063a3fd14>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      2\u001b[0m hist = model.fit_generator(train_batches,\n\u001b[1;32m      3\u001b[0m                            \u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtrain_batches\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msamples\u001b[0m \u001b[0;34m//\u001b[0m \u001b[0mBATCH_SIZE\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m                            \u001b[0mvalidation_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalid_batches\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m                            \u001b[0mvalidation_steps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalid_batches\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msamples\u001b[0m \u001b[0;34m//\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m                            \u001b[0mBATCH_SIZE\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'valid_batches' is not defined"
     ]
    }
   ],
   "source": [
    "# train the model\n",
    "hist = model.fit_generator(train_batches,\n",
    "                           steps_per_epoch=train_batches.samples // BATCH_SIZE,\n",
    "                           validation_data=valid_batches,\n",
    "                           validation_steps=valid_batches.samples //\n",
    "                           BATCH_SIZE,\n",
    "                           epochs=NUM_EPOCHS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# save trained weights\n",
    "model.save(WEIGHTS_FINAL)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot Results\n",
    "\n",
    "N=NUM_EPOCHS\n",
    "\n",
    "plt.style.use(\"ggplot\")\n",
    "plt.figure()\n",
    "plt.plot(np.arange(0, N), hist.history[\"loss\"], label=\"train_loss\")\n",
    "plt.plot(np.arange(0, N), hist.history[\"val_loss\"], label=\"val_loss\")\n",
    "\n",
    "plt.title(\"Training/Validation Loss on Dataset\")\n",
    "plt.xlabel(\"Epoch #\")\n",
    "plt.ylabel(\"Loss\")\n",
    "plt.legend(loc=\"lower left\")\n",
    "plt.savefig(\"plot_loss.png\")\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(np.arange(0, N), hist.history[\"accuracy\"], label=\"train_acc\")\n",
    "plt.plot(np.arange(0, N), hist.history[\"val_accuracy\"], label=\"val_acc\")\n",
    "\n",
    "plt.title(\"Training/Validation Accuracy on Dataset\")\n",
    "plt.xlabel(\"Epoch #\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.legend(loc=\"lower left\")\n",
    "plt.savefig(\"plot.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 88 images belonging to 4 classes.\n",
      "[('loss', 0.22705407039588657), ('accuracy', 0.89772725)]\n"
     ]
    }
   ],
   "source": [
    "# test model\n",
    "\n",
    "test_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)\n",
    "test_batches = test_datagen.flow_from_directory(DATASET_PATH + '/test',\n",
    "                                                target_size=IMAGE_SIZE,\n",
    "                                                interpolation='bicubic',\n",
    "                                                class_mode='categorical',\n",
    "                                                shuffle=False,\n",
    "                                                batch_size=1)\n",
    "\n",
    "out = model.evaluate_generator(test_batches, use_multiprocessing=True)\n",
    "print(list(zip(model.metrics_names, out)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_batches.reset()\n",
    "Y_pred = model.predict_generator(test_batches, use_multiprocessing=True)\n",
    "# print(len(Y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      " Classification Report\n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "   cocklebur       0.88      0.88      0.88        17\n",
      "     foxtail       0.93      0.93      0.93        14\n",
      "     pigweed       0.89      1.00      0.94        34\n",
      "     ragweed       0.89      0.74      0.81        23\n",
      "\n",
      "    accuracy                           0.90        88\n",
      "   macro avg       0.90      0.89      0.89        88\n",
      "weighted avg       0.90      0.90      0.89        88\n",
      "\n"
     ]
    }
   ],
   "source": [
    "y_pred = np.argmax(Y_pred, axis=1)\n",
    "\n",
    "print('\\n\\n Classification Report\\n')\n",
    "target_names = list(test_batches.class_indices.keys())\n",
    "print(classification_report(list(test_batches.classes), y_pred, target_names=target_names))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "Confusion Matrix\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('\\n\\nConfusion Matrix\\n')\n",
    "cm = confusion_matrix(test_batches.classes, y_pred)\n",
    "\n",
    "row_sums = cm.sum(axis=1)\n",
    "cm = cm / row_sums\n",
    "\n",
    "df_cm = pd.DataFrame(cm,\n",
    "                     index=['cocklebur', 'foxtail', 'pigweed', 'ragweed'],\n",
    "                     columns=['cocklebur', 'foxtail', 'pigweed', 'ragweed'])\n",
    "# print(df_cm)\n",
    "\n",
    "# flights = df_cm.pivot(\"month\", \"year\", \"passengers\")\n",
    "\n",
    "plt.figure(figsize=(5, 5))\n",
    "plt.title('InceptionV3')\n",
    "sn.heatmap(df_cm, annot=True, fmt='0.0%', cbar=False)\n",
    "plt.savefig('IncepV3.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
